#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {
//    int* nums3 = (int*)malloc(sizeof(int) * (m + n));
//    if (nums3 == NULL)
//    {
//        perror("nums3 fail");
//    }
//    int k = 0, count = m + n-1;
// 
//    while (nums1Size--)
//    {
//        nums3[count--] = nums1[m] > nums2[n] ? nums1[m--] : nums2[n--];
//    }
//    memcpy(nums1, nums3, sizeof(int) * (m + n));
//    free(nums3);
//    nums3 = NULL;
//}
//int main()
//{
//    int nums1[6] = {1,2,3};
//    int nums2[3] = { 2,2,6 };
//    merge(nums1,6, 3, nums2,3,3);
//    for (int i = 0; i < 6; i++)
//    {
//        printf("%d ", nums1[i]);
//    }
//	return 0;
//}

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {
    int count = m + n - 1;
    m = --m;
    n = --n;
    while (m >= 0 && n >= 0)
    {
        nums1[count--] = nums1[m] > nums2[n] ? nums1[m--] : nums2[n--];
    }
    while (n >= 0)
    {
        nums1[count--] = nums2[n--];
    }
}